home *** CD-ROM | disk | FTP | other *** search
/ MacHack 1997 / MacHack 1997.toast / Presentations / Presentations ’96 / Papers ’96 / Book of Practical Objects / BasicObjects ƒ / BoyerMoore.h < prev    next >
Encoding:
Text File  |  1996-04-29  |  1.2 KB  |  40 lines  |  [TEXT/CWIE]

  1. // Boyer-Moore Search Object
  2. #pragma    once
  3.  
  4.  
  5. class    BoyerMoore
  6. {
  7. protected:
  8.     unsigned char    fSkipTable[256];
  9.  
  10.     unsigned char    fSearchString[256];
  11.     short            fStringLen;
  12.     
  13.     void*            fSearchDataVoid;    // Holder for original search information
  14.     long            fSearchDataLen;        // How much data can we look though?
  15.     long            fStartingOffset;
  16.     unsigned char    *fSearchData;        // Assigned internally
  17.  
  18.     Boolean            fCaseInsensitive;
  19.  
  20. public:
  21.             BoyerMoore(void);
  22.             BoyerMoore(char* searchStr, short searchLen, void* searchData = nil, long searchDataLen = 0);
  23.     virtual    ~BoyerMoore(void);
  24.     
  25.     virtual    void    SetSearchString(char *searchStr, short searchLen);
  26.     virtual    void    SetSearchString(Str255 searchStr);
  27.     
  28.     virtual    void    SetSearchData(void *searchData, long dataLen);
  29.  
  30.     virtual    long    Search(void);    // Assumes all parameters have been setup
  31.     virtual    long    Search(long startingOffset, char *searchStr = nil, short searchLen = 0);    // Where we want to start searching
  32.     virtual    long    Search(long startingOffset, Str255 searchStr = nil);
  33.  
  34. protected:
  35.     virtual    void    PrepareSearchData(void);    // Setup the interall data for searching
  36.     virtual    void    CleanupSearchData(void);    // Let it go if it was locked or marked
  37.     
  38.     virtual    void    BuildSkipTable(void);
  39. };
  40.